{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e72f969d-90bc-41ee-bb09-c832c35cf69d",
   "metadata": {},
   "source": [
    "# 豆瓣电影评论爬虫作业\n",
    "\n",
    "## 背景\n",
    "豆瓣电影是一个广受欢迎的电影评论平台。本次作业要求你编写一个Python程序，爬取电影\"肖申克的救赎\"的所有评论，并将这些评论保存到CSV文件中。\n",
    "\n",
    "## 任务描述\n",
    "1. 编写一个Python程序，爬取豆瓣电影\"肖申克的救赎\"的所有评论。\n",
    "2. 将爬取的评论数据保存到CSV文件中。\n",
    "\n",
    "## 具体要求\n",
    "1. 使用Python的requests库发送HTTP请求获取网页内容。\n",
    "2. 使用Beautiful Soup或类似的库解析HTML内容，提取评论数据。\n",
    "3. 处理分页，确保爬取所有页面的评论。\n",
    "4. 对于每条评论，至少爬取以下信息：\n",
    "   - 评论者的用户名\n",
    "   - 评论内容\n",
    "   - 评分（如果有）\n",
    "   - 评论时间\n",
    "5. 将爬取的数据保存到CSV文件中，每行代表一条评论，列包括上述信息。\n",
    "6. 实现错误处理和异常捕获，确保程序的稳定性。\n",
    "7. 遵守网站的robots.txt规则和爬虫礼仪，控制爬取速度，避免对目标网站造成压力。\n",
    "\n",
    "## 提示\n",
    "- 豆瓣电影\"肖申克的救赎\"的URL：https://movie.douban.com/subject/1292052/\n",
    "- 使用Python的csv模块来写入CSV文件。\n",
    "- 考虑使用随机延时来控制爬取速度，避免被网站封禁。\n",
    "- 注意处理可能出现的编码问题，确保中文字符能够正确保存。\n",
    "- 可能需要处理反爬虫机制，如设置适当的User-Agent头部。\n",
    "\n",
    "## 输出示例\n",
    "你的CSV文件应该类似于以下格式：\n",
    "\n",
    "```\n",
    "用户名,评分,评论时间,评论内容\n",
    "用户A,5,2023-01-01,\"这是一部经典电影，情节扣人心弦...\"\n",
    "用户B,4,2023-01-02,\"虽然有些情节略显夸张，但整体很棒...\"\n",
    "...\n",
    "```\n",
    "\n",
    "## 注意事项\n",
    "- 确保你的爬虫程序遵守豆瓣的使用条款和规定。\n",
    "- 不要过于频繁地发送请求，这可能会导致你的IP被暂时或永久封禁。\n",
    "- 考虑使用会话（Session）来维持连接，这可能会提高效率并减少被检测为爬虫的可能性。\n",
    "\n",
    "## 扩展任务（选做）\n",
    "1. 实现多线程爬取以提高效率（但要小心控制并发数量）。\n",
    "2. 添加命令行参数，允许用户指定要爬取的电影ID和输出文件名。\n",
    "3. 对爬取的评论进行简单的数据分析，如计算平均评分、生成词云等。\n",
    "4. 实现断点续爬功能，允许程序在中断后从上次爬取的位置继续。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ca1bf05c-f1a6-4227-9ce0-a29facadffa0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
